我发现了这个奇怪的行为:$a=$b+$c;echo$a;//prints0此时打印0:$a=$b;echo$a;//doesn'tprintanything不打印任何东西。是否可以用有意义的方式解释? 最佳答案 这是类型杂耍的副作用。undefinedvariable$b和$c等同于null。在PHP中,$a=null+null等价于$a=(int)null+(int)null与$a=0相同+0。这就是$a等于0的原因。因此$a=$b与$a=null相同,所以当您echo$a时,什么都没有打印出来。这是解释类型杂耍的不错引用-htt
我有这种类型的字符串:aabbcc-12-00001-g001-1024.pngddeeffgg-1-50001-i001-500.jpgddeeffgg-1-50001-i001.jpg我想提取没有大小的文件名,它始终是文件扩展名之前的-xxx或-xxxx。例如,对于三个字符串,我想匹配:aabbcc-12-00001-g001.pngddeeffgg-1-50001-i001.jpgddeeffgg-1-50001-i001.jpg我的想法是先调整大小,然后将preg_replace与PHP一起使用,但不确定如何只匹配大小,尝试使用:-\d{3,4}\.[a-z]{3}但这是匹配-
我有一个PHP应用程序,它与支付处理器接口(interface)以处理信用卡。有时,处理器的后响应失败(例如矩阵中的暂时故障),我们没有收到付款的自动通知。在这些情况下,我们会回退到从始终发送的确认电子邮件中输入数据。我希望我的代码解析出电子邮件的文本以获取数据,这似乎是preg_match_all的完美用例。问题是电子邮件的格式不正确:它以name:value对出现,但它们都在一行上,而且通常值是空白,这让我很困惑。我非常擅长正则表达式基础知识(量词、分组、字符类、anchor、修饰符),但我真的没有前瞻和反向引用的经验,而且它们是否能提供帮助对我来说一点也不明显。示例数据可能看起来
我有以下代码:$postcode=$form->createElement('text','postcode');$postcode->setLabel('Postcode:');$postcode->addValidator('regex',false,array('/^[a-z]{1,3}[0-9]{1,3}?[0-9]{1,3}[a-z]{1,3}$/i'));$postcode->addFilters(array('StringToUpper'));$postcode->setRequired(true);它在表单中创建一个输入字段并设置一个正则表达式验证规则并且工作正常。问题
我想在非常非常长的文本中找到第一个匹配的字符串。我知道我可以使用preg_grep()并获取返回数组的第一个元素。但是如果我只需要第一场比赛(或者我知道提前只有一场比赛),这样做效率不高。有什么建议吗? 最佳答案 preg_match()?preg_match()returnsthenumberoftimespatternmatches.Thatwillbeeither0times(nomatch)or1timebecausepreg_match()willstopsearchingafterthefirstmatch.preg_m
我对Regex的体验不仅仅是介绍,所以这是一个挑战。也许一些数学/物理/某人可以弄清楚...我们必须用包裹某些单词/短语以便为跨度的内容显示相关的工具提示。挑战在于,如果一个词是另一个已经换行的短语的一部分,如何避免不换行两次。示例:“使用Twitter分析器进行分析”。Twitter和TwitterAnalyzer都有工具提示,但只有TwitterAnalyzer需要包裹在上面。这是通过确保我们首先搜索最长的短语来实现的。如果两个短语中较短的短语已经被包装在另一个跨度中,您如何防止(仅使用正则表达式)再次包装?此外,Twitter和TwitterAnalytics只是整个列表的两个示
我有以下值:start=2011-03-10T13:00:00Z;end=2011-03-30T13:00:00Z;scheme=W3C-DTF我使用以下正则表达式去除“开始”和“结束”日期并将它们分配给它们自己命名的捕获对:#^start=(?P.+);end=(?P.+);#ix'可能不是绝对最好的REGEX,但如果同时存在“开始”和“结束”值,它就足够好用了。现在,如果缺少“expirationDate”,我仍然需要匹配“publishDate”,反之亦然。我怎样才能使用一个表达式来做到这一点?我不是最擅长正则表达式的人,而且我开始涉足更高级的东西,因此非常感谢对此的任何帮助。谢
我有一些类似的字符串Shp1,737PlentyRd,MillParkVIC3082560HighSt,PrestonVIC3072217MicklehamRd,TullamarineVIC3043从这些我需要“VIC”。谁能帮助我找到使用正则表达式或php字符串函数的解决方案这是实际的字符串...从excel表中读取我想要这些字符串中的州名称,例如NSW、ACT、VIC等 最佳答案 preg_match_all('/(?P[A-Z]{2,3})\s\d{4}$/m',$str,$matches);var_dump($matches
我正在尝试使用正则表达式,但它让我伤透了脑筋。我会认为我有它,脚本就坏了。我需要尝试为人们提供一种通过短信报告位置的方法。我让他们给我发一个字符串,如下所示:Igiveup,stoppingforthenight.FindmeatMainStreetandPine,Atlanta,GA.我想打破它在找到我。我需要捕获右侧的所有内容(基本上是他们的街角)并且我需要能够检测他们是否没有为Find使用正确的大写。有什么建议吗? 最佳答案 preg_match("/[Ff]indmeat(.+)/","Igiveup,findmeatstr
我在使用正则表达式时总是遇到困难。我已经为此寻求帮助,但我无法完全找到我要找的东西。我有遵循这种模式的文本block:[php]...这里有任何类型的代码示例[/php]我需要:检查方括号,它可以包含任意数量的20-30种编程语言名称(php、ruby等)。需要抓取左括号和右括号之间的所有代码。我已经计算出以下正则表达式:#\[([a-z]+)\]([^\[/]*)\[/([a-z]+)\]#i这与一切都很相配。但是,当代码示例包含方括号时,它会中断。我该如何修改它,以便匹配那些左/右大括号之间的任何字符供以后使用? 最佳答案 这是